Cost and flexibility of use have and will likely continue to be driving factors in the design and construction of personal computers and related computer workstations. As at least one result, peripheral interconnect buses used to support variable configurations of peripheral adapters are being used across wide categories of computer system and workstation platforms. In many cases, these platforms utilize host processors of fundamentally different processor families. By adopting peripheral interconnect buses such as the personal computer interface (PCI) bus, peripheral adapters are usable in a wider variety and larger installed base of platforms. Cost of design, manufacture, and support of a smaller set of peripheral adapters for a wider base of potential applications reduces not only the direct cost of the peripheral adapters on a per unit basis but also reduces the complexity and time necessary to provide support to end-users of such peripheral adapters.
A significant problem remains, however, in that the ready cross-platform use of peripheral adapters directly complicates use of firmware based initialization and operating interface software. Such firmware is typically referred to as a BIOS (basic I/O system) extension that implements a physical layer of programming used by the mainboard BIOS to functionally integrate a peripheral adaptor into a particular platform. This firmware is typically presented as machine language code and is, therefore, specific to the execution capabilities of a particular processor or closely related family of processors. In general, the host processor utilizes the mainboard BIOS of a specific platform to find, validate, and execute the initialization routines of the peripheral adaptor BIOS extension.
A problem in allowing the use of a peripheral adaptor in substantially different processor-based platforms is that the erroneous execution of a BIOS extension for another processor type will fail and likely compromise the operation of the platform. This problem has been overcome in the past by tailoring individual peripheral adapters with single-processor specific BIOS extensions and, as needed, hardware modifications to customize the adaptor for a particular processor or processor family. Inventories, accounting, and support for each different firmware variant of a peripheral adaptor must be tracked and managed. The cost associated with this is substantial not only for the peripheral adaptor manufacturer, but also for system integrators who construct and sell complete platforms. Where the end-user is in effect the system integrator, a substantially greater level of technical understanding is required to properly identify and specify the correct peripheral adaptor for the users'specific platform configuration.
Alternatives have been suggested and, in a few instances, implemented. One such solution has been proposed as IEEE standard 1275-1994, known as the Open BIOS specification. This standard contemplates the use of a high level interpreted language, such as Forth, for implementation of the BIOS extension firmware. Such high level language BIOS extensions require a Forth interpreter to be resident in or as an adjunct to the mainboard BIOS. Whatever Forth program is stored as the BIOS extension must generally be executable by the Forth interpreters actually implemented with the mainboard BIOSs of every different processor mainboard.
Although the Open Boot specification has been apparently available since 1994, very few systems have implemented compatible firmware BIOS extensions. Certainly, all present legacy platforms cannot be field upgradable to take advantage of the Open Boot standard.
Another alternative is to deliver the peripheral adaptor with multiple BIOS extension images in the onboard firmware. Selection of a particular image for use as the BIOS extension for a particular processor must still be resolved particularly for legacy platforms. Existing standardized peripheral interchange buses, such as PCI, do not make provision for identifying the type or family of mainboard processor either physically or electrically at the physical bus level. Consequently, there is no known method of ensuring the correct selection of a BIOS extension image without some if not significant hardware support implemented directly on the peripheral adaptor. Some determinations of processor type have been attempted utilizing bus electrical signatures or the like, but with little success. A greater degree of success has been achieved by the use of a manually placed jumper that explicitly selects a single BIOS extension image for use.
Both of these solutions, to the extent that they are effective at all, require significantly complex hardware to detect processor type or substantial manufacturer, OEM, and end-user support to broadly ensure that any manually placed jumpers are correctly used. In the former instance, bus electrical characteristics and other potentially distinguishing characteristics can be greatly obscured by the many different implementations of processor mainboards. In the latter instance, particularly where the peripheral adaptor is primarily intended for use as a field upgrade or end-user add-on, a substantial amount of end-user support is required in practice to maintain good end-user relations and ensure that jumpers are manually positioned correctly for the particular processor type or family of the user's mainboard.